﻿// 3582. 身份证校验.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>

using namespace std;
/*
https://www.acwing.com/problem/content/3585/

身份证号码共 18 位，最后一位是校验位。

校验的规则如下：

身份证的前十七位数字和对应的权值相乘后相加后所得的和对 11 取余的余数与校验位（身份证最后一位）能够相对应，则身份证合法。

前十七位的权值分别是：7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

余数 x和校验位 y 的对应规则对应如下：

x: 0 1 2 3 4 5 6 7 8 9 10
y: 1 0 x 9 8 7 6 5 4 3 2
现在，给定若干个身份证号，请你判断这些身份证号是否合法。

输入格式
若干行，每行包含一个字符串表示输入身份证号。

输出格式
如果所输入身份证号码合法，输出 ID Corrent，否则输出 ID Wrong。

每个身份证号的输出占一行。

数据范围
输入不超过 100行，
每个字符串的长度不超过 20。

输入样例：
1222222222
11111111111111111111
341181198809150011
11010119900307387X
150102199003075131
150102200003075131
输出样例：
ID Wrong
ID Wrong
ID Corrent
ID Corrent
ID Corrent
ID Wrong
*/

int verify[17] = { 7, 9, 10, 5, 8, 4, 2 ,1, 6, 3, 7, 9, 10, 5 ,8 ,4, 2 };
char result[11] = { '1', '0', 'X', '9', '8', '7', '6', '5' ,'4', '3', '2' };


int main()
{
	string str;
	while (cin >> str) {
		if (str.size() != 18) {
			cout << "ID Wrong" << endl; continue;
		}
		int sum = 0;
		for (int i = 0; i < 18; i++) {
			sum += (str[i] - '0')* (verify[i]);
		}
		sum = sum % 11;
		if (result[sum] == str.back()) {
			cout << "ID Corrent" << endl;
		}
		else {
			cout << "ID Wrong" << endl;
		}
	}


	return 0;
}
 